package vectortile.layer;

import vectortile.feature.Feature;
import vectortile.feature.FeatureOrBuilder;
import vectortile.value.Value;
import vectortile.value.ValueOrBuilder;

/**
 * @Author jlj
 * @Date 2020/12/28 11:53
 * @Description
 * @Modified
 */
public interface LayerOrBuilder extends com.google.protobuf.GeneratedMessageV3.ExtendableMessageOrBuilder<Layer> {

    /**
     * <pre>
     * Any compliant implementation must first read the version
     * number encoded in this message and choose the correct
     * implementation for this version number before proceeding to
     * decode other parts of this message.
     * </pre>
     *
     * <code>required uint32 version = 15 [default = 1];</code>
     */
    boolean hasVersion();

    /**
     * <pre>
     * Any compliant implementation must first read the version
     * number encoded in this message and choose the correct
     * implementation for this version number before proceeding to
     * decode other parts of this message.
     * </pre>
     *
     * <code>required uint32 version = 15 [default = 1];</code>
     */
    int getVersion();

    /**
     * <code>required string name = 1;</code>
     */
    boolean hasName();

    /**
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();

    /**
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
    getNameBytes();

    /**
     * <pre>
     * The actual features in this tile.
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Feature features = 2;</code>
     */
    java.util.List<Feature>
    getFeaturesList();

    /**
     * <pre>
     * The actual features in this tile.
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Feature features = 2;</code>
     */
    Feature getFeatures(int index);

    /**
     * <pre>
     * The actual features in this tile.
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Feature features = 2;</code>
     */
    int getFeaturesCount();

    /**
     * <pre>
     * The actual features in this tile.
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Feature features = 2;</code>
     */
    java.util.List<? extends FeatureOrBuilder>
    getFeaturesOrBuilderList();

    /**
     * <pre>
     * The actual features in this tile.
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Feature features = 2;</code>
     */
    FeatureOrBuilder getFeaturesOrBuilder(int index);

    /**
     * <pre>
     * Dictionary encoding for keys
     * </pre>
     *
     * <code>repeated string keys = 3;</code>
     */
    java.util.List<java.lang.String> getKeysList();

    /**
     * <pre>
     * Dictionary encoding for keys
     * </pre>
     *
     * <code>repeated string keys = 3;</code>
     */
    int getKeysCount();

    /**
     * <pre>
     * Dictionary encoding for keys
     * </pre>
     *
     * <code>repeated string keys = 3;</code>
     */
    java.lang.String getKeys(int index);

    /**
     * <pre>
     * Dictionary encoding for keys
     * </pre>
     *
     * <code>repeated string keys = 3;</code>
     */
    com.google.protobuf.ByteString getKeysBytes(int index);

    /**
     * <pre>
     * Dictionary encoding for values
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Value values = 4;</code>
     */
    java.util.List<Value> getValuesList();

    /**
     * <pre>
     * Dictionary encoding for values
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Value values = 4;</code>
     */
    Value getValues(int index);

    /**
     * <pre>
     * Dictionary encoding for values
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Value values = 4;</code>
     */
    int getValuesCount();

    /**
     * <pre>
     * Dictionary encoding for values
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Value values = 4;</code>
     */
    java.util.List<? extends ValueOrBuilder>
    getValuesOrBuilderList();

    /**
     * <pre>
     * Dictionary encoding for values
     * </pre>
     *
     * <code>repeated .vector_tile.Tile.Value values = 4;</code>
     */
    ValueOrBuilder getValuesOrBuilder(int index);

    /**
     * <pre>
     * Although this is an "optional" field it is required by the specification.
     * See https://github.com/mapbox/vector-tile-spec/issues/47
     * </pre>
     *
     * <code>optional uint32 extent = 5 [default = 4096];</code>
     */
    boolean hasExtent();

    /**
     * <pre>
     * Although this is an "optional" field it is required by the specification.
     * See https://github.com/mapbox/vector-tile-spec/issues/47
     * </pre>
     *
     * <code>optional uint32 extent = 5 [default = 4096];</code>
     */
    int getExtent();
}